ম্যাটল্যাবে Persistent এবং Global ভেরিয়েবল দুটি গুরুত্বপূর্ণ ধারণা, যা বিশেষ পরিস্থিতিতে ব্যবহার করা হয়। এগুলি সাধারণত ফাংশনগুলির মধ্যে ডেটা শেয়ারিং এবং স্থায়ী মান ধরে রাখার জন্য ব্যবহৃত হয়। এই ভেরিয়েবলগুলির মধ্যে পার্থক্য রয়েছে, এবং প্রতিটি ভেরিয়েবলের বিশেষ ব্যবহার রয়েছে।
১. Persistent Variables
Persistent Variables হল এমন ভেরিয়েবল যা একবার ফাংশনে ইনিশিয়ালাইজ হওয়ার পর, ফাংশনটির কল সেশনের মধ্যে তাদের মান ধরে রাখে। ফাংশনটি পরবর্তীভাবে আবার কল করার পরেও পূর্বের মানগুলি মেমোরিতে থাকে, এবং তা পুনরায় ইনিশিয়ালাইজ হয় না। এটি সাধারণত এমন ক্ষেত্রগুলিতে ব্যবহার করা হয় যেখানে ফাংশনের মধ্যে কিছু স্টেট (state) ধরে রাখতে হয়।
Persistent Variable এর বৈশিষ্ট্য:
- একবার ইনিশিয়ালাইজ হওয়ার পর মান পরিবর্তিত হয়।
- ফাংশন কলের মধ্যে তার মান ধরে রাখে।
- ফাংশনের বাইরে অ্যাক্সেস করা যায় না।
Persistent Variable ব্যবহার করার উপায়:
persistent কীওয়ার্ড ব্যবহার করে একটি ভেরিয়েবলকে persistent হিসেবে ডিক্লেয়ার করা হয়।
উদাহরণ:
% Function: countCalls.m
function countCalls()
persistent count; % Persistent ভেরিয়েবল 'count'
if isempty(count) % প্রথম কলের সময় ইনিশিয়ালাইজ করা
count = 0;
end
count = count + 1; % 'count' বাড়ানো
disp(['ফাংশনটি কল করা হয়েছে ', num2str(count), ' বার']);
endব্যবহার:
countCalls(); % প্রথম কল: ফাংশনটি কল করা হয়েছে 1 বার
countCalls(); % দ্বিতীয় কল: ফাংশনটি কল করা হয়েছে 2 বার
countCalls(); % তৃতীয় কল: ফাংশনটি কল করা হয়েছে 3 বারএখানে, count ভেরিয়েবলটি persistent এবং এর মান ফাংশনটির কলের মধ্যে সংরক্ষিত থাকে।
Persistent Variable এর সুবিধা:
- স্টেট ধরে রাখা: ফাংশনটির মধ্যবর্তী স্টেট বা মান রাখা যায়, যা বারবার ইনিশিয়ালাইজ করতে হয় না।
- গণনা বৃদ্ধি: গণনা বা স্টেট সংরক্ষণ করার জন্য এটির ব্যবহার খুবই উপকারী, যেমন কাউন্টার বা একে অপরের সাথে সম্পর্কিত ভেরিয়েবল হিসেব করা।
২. Global Variables
Global Variables হল এমন ভেরিয়েবল যা একাধিক ফাংশন বা স্ক্রিপ্টে ব্যবহার করা যেতে পারে এবং ম্যাটল্যাবের পুরো পরিবেশে অ্যাক্সেসযোগ্য থাকে। এগুলি বিভিন্ন ফাংশনে শেয়ার করা হয়, যাতে এক ফাংশন অন্য ফাংশনের পরিবর্তনগুলিকে জানতে পারে। কিন্তু, Global Variables ব্যবহারে সতর্ক থাকতে হবে, কারণ এটি কোডের সঠিকতা এবং ট্র্যাকিংয়ের জন্য সমস্যা সৃষ্টি করতে পারে।
Global Variable এর বৈশিষ্ট্য:
- প্রোগ্রামটির সব ফাংশনে অ্যাক্সেসযোগ্য।
- একই নামের ভেরিয়েবল গ্লোবালি ব্যবহৃত হয়।
- ফাংশন বা স্ক্রিপ্টের মধ্যে গ্লোবালি শেয়ার করা যায়।
Global Variable ব্যবহার করার উপায়:
global কীওয়ার্ড ব্যবহার করে একটি ভেরিয়েবলকে গ্লোবাল হিসেবে ডিক্লেয়ার করা হয়। আপনাকে সেই গ্লোবাল ভেরিয়েবলটির নাম ফাংশনে বা স্ক্রিপ্টে উল্লেখ করতে হবে, যাতে ম্যাটল্যাব জানে যে এটি গ্লোবালি ব্যবহৃত একটি ভেরিয়েবল।
উদাহরণ:
% Function: incrementGlobal.m
global count; % Global ভেরিয়েবল 'count'
count = count + 1; % 'count' ভেরিয়েবল বৃদ্ধি করা
disp(['গ্লোবাল ভেরিয়েবল count এর মান: ', num2str(count)]);
endব্যবহার:
global count; % Global ভেরিয়েবল 'count' ডিক্লেয়ার করা
count = 0; % শুরুতে মান 0 দেওয়া
incrementGlobal(); % count = 1
incrementGlobal(); % count = 2
incrementGlobal(); % count = 3এখানে, count ভেরিয়েবলটি গ্লোবাল এবং এটি ফাংশনগুলির মধ্যে শেয়ার করা হচ্ছে।
Global Variable এর সুবিধা:
- ভেরিয়েবল শেয়ারিং: একাধিক ফাংশন বা স্ক্রিপ্টের মধ্যে একই ভেরিয়েবল ব্যবহার করা সম্ভব হয়।
- সহজ ডেটা এক্সচেঞ্জ: গ্লোবাল ভেরিয়েবল ব্যবহার করে ডেটা সহজেই একাধিক অংশে এক্সচেঞ্জ করা যায়।
Global Variable এর সমস্যা:
- কনফিউশন সৃষ্টি করতে পারে: গ্লোবাল ভেরিয়েবল ব্যবহারের ফলে কোডের মধ্যে কনফিউশন হতে পারে, কারণ একাধিক ফাংশনে একই নামের ভেরিয়েবল ব্যবহৃত হতে পারে।
- ডিবাগিংয়ের সমস্যা: গ্লোবাল ভেরিয়েবলগুলো কখন পরিবর্তিত হচ্ছে তা ট্র্যাক করা কঠিন হয়ে পড়ে, এবং ডিবাগিংয়ের জন্য এটি সমস্যার সৃষ্টি করতে পারে।
সারাংশ
- Persistent Variables: এই ভেরিয়েবলগুলি একবার ফাংশনে ইনিশিয়ালাইজ হওয়ার পর, ফাংশনটি পরবর্তীভাবে কল করার সময় তার মান ধরে রাখে। এগুলি ফাংশনের মধ্যে স্টেট বা কন্টিনিউয়াস গণনা জন্য ব্যবহার করা হয়।
- Global Variables: গ্লোবাল ভেরিয়েবলগুলি পুরো প্রোগ্রামে যে কোন ফাংশনে অ্যাক্সেসযোগ্য থাকে এবং একাধিক ফাংশনে ডেটা শেয়ার করার জন্য ব্যবহৃত হয়।
কীট: গ্লোবাল ভেরিয়েবল ব্যবহারের ক্ষেত্রে সাবধানতা অবলম্বন করা উচিত, কারণ এটি কোডের পারফরম্যান্স এবং নির্ভরযোগ্যতার উপর নেতিবাচক প্রভাব ফেলতে পারে।
Read more